<?php

/**
 * SancionAJugador form.
 *
 * @package    ehockey
 * @subpackage form
 * @author     Your name here
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class SancionAJugadorForm extends BaseSancionAJugadorForm
{
  /**
   * @see SancionForm
   */
  public function configure()
  {
    parent::configure();
    $this->widgetSchema['partido_id'] = new sfWidgetFormInputHidden();
    
    $culture = sfContext::getInstance()->getUser()->getCulture();
	$years = range(2010, 2100);
	$date_config = array('years' => array_combine($years, $years), 'culture' => $culture);
	$this->widgetSchema['fecha_inicio'] = new sfWidgetFormJQueryDate(array('date_widget' => new sfWidgetFormI18nDate($date_config, array('class' => 'date')), 'culture' => $culture));
	$this->validatorSchema['fecha_inicio'] = new sfValidatorDate(array('min' => time(), 'date_format_range_error' => 'd/m/Y'), array('min' => 'La fecha debe ser posterior a %min%.'));
	
	$this->widgetSchema['fecha_fin'] = new sfWidgetFormJQueryDate(array('date_widget' => new sfWidgetFormI18nDate($date_config, array('class' => 'date')), 'culture' => $culture));
	$this->validatorSchema['fecha_fin'] = new sfValidatorDate(array('min' => time(), 'date_format_range_error' => 'd/m/Y'), array('min' => 'La fecha debe ser posterior a %min%.'));
	$this->validatorSchema->setPostValidator(new sfValidatorSchemaCompare('fecha_fin', sfValidatorSchemaCompare::GREATER_THAN, 'fecha_inicio', array('throw_global_error' => false), array('invalid' => 'La fecha de fin debe ser posterior a la fecha de inicio' )));
  }
  
  public function actualizarOpcionesJugador($partido)
  { 
  	$jugadoresId = $this->getJugadoresPartido($partido);
  	if (! empty($jugadoresId)) {
	  	$query = Doctrine::getTable('Jugador')->createQuery('a')->whereIn('id', $jugadoresId);
	  	$this->widgetSchema['jugador_id'] = new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('Jugador'), 'add_empty' => false, 'query' => $query));
  	}
  }
  
  private function getJugadoresPartido($partido) {
	  $jugadoresId = array();
	  foreach ($partido->getVisitante()->getJugadoresDeEquipo() as $jugadorDeEquipo) {
	  	array_push($jugadoresId, $jugadorDeEquipo->getJugadorId());
	  }
	  foreach ($partido->getLocal()->getJugadoresDeEquipo() as $jugadorDeEquipo) {
	  	array_push($jugadoresId, $jugadorDeEquipo->getJugadorId());
	  }
	  return $jugadoresId;
  }
}
